<?php

namespace App\Http\Controllers\Admin;

use Illuminate\Http\Request;
use DB;
use App\Http\Requests;
use App\Http\Controllers\Controller;
use App\Http\Requests\CateInsertRequest;

class CateController extends Controller
{
   /*
        分类列表
   */
        public function getIndex()
        {

        	// $res=self::getCatesByPid(0);
        	// dd($res);
        	$cates=self::getcates();

            //解析模板 根目录为resources下的views
            return view('Admin.Cate.index',['cates'=>$cates]);
            // echo '分类列表';
        }

        /*
			分类添加
        */
		public function getAdd()
		{
			//查询所有分类
			// $cates=DB::table('cate')->get();
			$cates=self::getcates();

			//解析模板
			return view('admin.cate.add',['cates'=>$cates]);
		}

		/*
			分类添加数据处理
		*/
		public function postInsert(CateInsertRequest $request)
		{
			$data= $request->only(['pid','tname']);

			//判断当前添加的分类是否为顶级分类
			if($data['pid']==0){
				$data['path']=0;
			}else{
				//子类
				//先查询父级的path路径
				$res=DB::table('shop_types')->where('tid',$data['pid'])->first();
				$data['path']=$res->path.','.$data['pid'];
			}

			// dd($data);
			//添加到数据库
			$res=DB::table('shop_types')->insert($data);
			if($res){
				return redirect('/admin/cate/index')->with('success','分类添加成功');
			}else{
				return back()->with('error','分类添加失败');
			}
		}
		/*
			按照格式要求显示数据
		*/
		public static function getCates()
		{
        	//查询所有分类
			// $cates=DB::table('cate')->get();
			$cates=DB::select("select *,concat(path,',',tid) as paths from shop_types order by paths");
			foreach ($cates as $k => $v) {
				$arr=explode(',',$v->path);
				$len=count($arr)-1;
				$cates[$k]->tname=str_repeat('|--->', $len).$v->tname;
			}
			
			return $cates;	
		}

		/*
			根据pid获取当前类下的所有子分类  递归
		*/
		public static function getCatesByPid($pid)
		{
			//获取$pid下的所有分类
			$res=DB::table('shop_types')->where('pid',$pid)->get();
			
			$data=[];
			foreach ($res as $k => $v) {
				$v->sub=self::getCatesByPid($v->tid);
				$data[]=$v;
			}
			
			return $data;
		} 

		/*
		    封装方法 进行ajax删除操作
		*/
		public function postDelete(Request $request)
		{
		    // echo 'delete';
		    $tid = $request->input('tid');
		    //删除用户
		    $res = DB::table('shop_types')->delete($tid);
		    echo $res;
		}

		 /*

        封装方法进行修改显示
    	*/
	    // public function getEdit($id) 这种为第一种方法 index中注释的是其配套
	    public function getEdit(Request $request)
	    {
	        $tid = $request->input('tid');

	        //查询这个用户

	       $cates= DB::table('shop_types')->where('tid',$tid)->first();
	       // dd($cates);

	       //解析模板
	        return view('Admin.cate.edit',['cates'=>$cates]);
	    }
	    /*
        进行数据修改
    	*/
	    public function postUpdate(Request $request)
	    {
	        $data = $request->only(['tname']);
	        //获取id
	        $tid = $request->input('tid');

	        //进行数据修改操作
	        $res = DB::table('shop_types')->where('tid',$tid)->update($data);

	        if($res){
	            //成功 分类列表页
	            return redirect('/admin/cate/index')->with('success','类别名修改成功');
	        }else{
	            return back()->with('error','类别名修改失败');
	    }

    }
}
